package com.solution.admin.customer.service;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.solution.admin.customer.entity.CompanyEntity;
import com.solution.admin.customer.entity.CustomerEntity;
import com.solution.common.page.PageBean;
import com.solution.common.page.PageParam;

/**
 * 单位信息接口service接口层
 * 
 * @author solin
 * @date 2017-09-25 00:11:38
 */
public interface CompanyService {

    /**
     * 企业注册
     * 
     * @param company
     * @param customer
     * @return int
     * @author xu_cc
     * @throws Exception
     *             exception
     * @Date 创建时间：2017年9月25日 下午5:11:38
     */
    int doCompanyReg(CompanyEntity company, CustomerEntity customer) throws Exception;

    /**
     * 保存单位信息
     * 
     * @param companyEntity
     *            单位信息实体
     * @return Long 返回插入单位信息记录ID
     * @author solin
     * @date 2017-09-25 00:11:38
     */
    public long saveCompany(CompanyEntity companyEntity);

    /**
     * 删除单位信息
     * 
     * @param
     * @return int 返回删除记录条数
     * @author solin
     * @date 2017-09-25 00:11:38
     */
    public int deleteCompanyById(long id);

    /**
     * 根据ID查询单位信息
     * 
     * @param id
     *            单位信息id
     * @return CompanyEntity 单位信息对象
     * @author solin
     * @date 2017-09-25 00:11:38
     */
    public CompanyEntity getCompanyById(Long id);

    /**
     * 更新单位信息
     * 
     * @param CompanyEntity
     *            单位信息对象
     * @return int 更新是否成功，>1代表更新成功
     * @author solin
     * @date 2017-09-25 00:11:38
     */
    public int updateCompany(CompanyEntity companyEntity);
    
    /**
     * 更新单位开票信息
     * 
     * @param CompanyEntity
     *            单位信息对象
     * @return int 更新是否成功，>1代表更新成功
     * @author solin
     * @date 2017-09-25 00:11:38
     */
    public int updateCompanyBillingInfo(CompanyEntity companyEntity);

    /**
     * 分页查询单位信息
     * 
     * @param pageParam
     *            分页参数
     * @param paramMap
     *            查询参数
     * @return PageBean 分页参数和分页数据
     * @author solin
     * @date 2017-09-25 00:11:38
     */
    public PageBean listCompanyPage(PageParam pageParam, Map<String, Object> paramMap);

    /**
     * 根据条件查询单位信息
     * 
     * @param param
     * @return 单位信息列表
     * @author solin
     * @date 2017-09-25 00:11:38
     */
    public List<CompanyEntity> listCompany(Map<String, Object> param);
    
    /**
     * 根据公司ID获取业务员信息
     * @param companyId
     * @return
     * @author xkl
     * @date 2018年2月9日 下午5:13:38
     */
    public Map<String, Object> getSalesmanByCompanyId(Long companyId);

}
